package de.mnit.basis.swt.spezial.suche;

import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

import de.mnit.basis.daten.konstant.position.POSITION_V;
import de.mnit.basis.daten.konstant.sys.SYSTEM;
import de.mnit.basis.swt.anw.A_MN_Gruppe;
import de.mnit.basis.swt.element.S_SWT_Komponente;
import de.mnit.basis.swt.element.feld.werkzeug.knopf.SWT_WerkzeugTaster;
import de.mnit.basis.swt.element.steuer.rollbar.SWT_TextEingabe;
import de.mnit.basis.swt.element.steuer.rollbar.gruppe.SWT_WerkzeugLeiste;
import de.mnit.basis.swt.grafik.icon.direkt.ICON;
import de.mnit.basis.swt.layout.LayoutGitter;
import de.mnit.basis.sys.event.S_Zuhoerer;
import de.mnit.basis.sys.sprache.S;


/**
 * @author Michael Nitsche
 */
public class K_SucheFlach extends A_MN_Gruppe<K_SucheFlach> implements S_KSuche {

	public static void main(String[] args)   { start(K_SucheFlach.class,600,400); }


	private static final S s=new S(K_SucheFlach.class);
	public SWT_WerkzeugLeiste	k_loeschen = new SWT_WerkzeugLeiste().s1_Flach();
	public SWT_WerkzeugTaster	k_leeren;
	public SWT_TextEingabe		k_suche    = new SWT_TextEingabe();


	protected S_SWT_Komponente<?, ? extends Composite> layout() {
		return LayoutGitter.neu()
			.sSpaltenAnzahl(2)
			.sKomponente(t.k_suche)
				.sFlexibelH()
//				.sHoehe(18)
				.sPositionV(POSITION_V.MITTE)
			.sKomponente(t.k_loeschen)
//				.sHoehe(18)
				.sFlexibelV()
				.sBreite(24+2*7)
			.fertig();
	}

	protected void initStyle() {
	}

	protected void initEvents() {
		SWT_WerkzeugTaster leeren=this.k_loeschen.nFeldBild(ICON._24.AKTION_LOESCHEN, s.t("Filter entfernen"));

		//Senden
		t.k_suche.eTaste(new KeyListener(){
			public void keyPressed(KeyEvent e)   {}
			public void keyReleased(KeyEvent e) {
				String suche=t.k_suche.gText();
				t.zuhoererStart("SUCHE", suche);
			}
		});
		leeren.eAuswahl(new Listener(){
			public void handleEvent(Event event) {
				t.k_suche.sText("");
				t.zuhoererStart("SUCHE", "");
			}
		});
	}

	public void eSuche(S_Zuhoerer<String> z) {
		t.zuhoererPlus("SUCHE", z);
	}

	public void sLeer() {
		this.k_suche.sText("");
	}

	public String gText() {
		return this.k_suche.gText();
	}

	public void sSichtbar(boolean b) {
		t.k_loeschen.sSichtbar(b);
		t.k_suche.sSichtbar(b);
	}

	public void sAktiviert(boolean b) {
		if(!SYSTEM.gAktuell().istWindows()) //BUGFIX: In XP werden die Disabled-Icon's normal ziemlich bescheiden dargestellt! Leider für Button keine Alternative
			t.k_leeren.sAktiviert(b);
		t.k_suche.sAktiviert(b);
	}

	public void sFokus() {
		t.k_suche.sFokus();
	}

}
